#include "matrix_key.h"

//矩阵键盘横向行：PB14 PE13 PE7 PA8-------纵向列：PA15 PD0 PD3 PE2
void matrixKeyInit(){
	GPIO_InitTypeDef GPIO_InitStruct;
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);//时钟使能
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD,ENABLE);
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);
	
	//设置GPIO_Mode_OUT各个引脚参数
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;//寄存器输出模式
	GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上拉电阻设置默认电位
	GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;//推挽输出
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
	
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_14;	
	GPIO_Init(GPIOB,&GPIO_InitStruct);

	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;	
	GPIO_Init(GPIOE,&GPIO_InitStruct);

	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_7;	
	GPIO_Init(GPIOE,&GPIO_InitStruct);

	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8;	
	GPIO_Init(GPIOA,&GPIO_InitStruct);

	GPIO_SetBits(GPIOB, GPIO_Pin_14);
	GPIO_SetBits(GPIOE, GPIO_Pin_13);
	GPIO_SetBits(GPIOE, GPIO_Pin_7);
	GPIO_SetBits(GPIOA, GPIO_Pin_8);
	
	//设置GPIO_Mode_IN各个引脚参数
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;//寄存器输出模式
	GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上拉电阻设置默认电位
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;

	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_15;	
	GPIO_Init(GPIOA,&GPIO_InitStruct);

	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;	
	GPIO_Init(GPIOD,&GPIO_InitStruct);
	
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3;	
	GPIO_Init(GPIOD,&GPIO_InitStruct);

	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2;	
	GPIO_Init(GPIOE,&GPIO_InitStruct);
}
//uint8_t keyValue(uint16_t GPIO_Pinx){
//	uint8_t ret = 0;
//	if(0 == GPIO_ReadInputDataBit(GPIOE, GPIO_Pinx))	//抖动之前
//	{
//		myDelayMs(80);
//		if(0 == GPIO_ReadInputDataBit(GPIOE, GPIO_Pinx)){		//抖动之后
//			TIM_Cmd(TIM6, ENABLE);//基本定时器开启
//			while(0 == GPIO_ReadInputDataBit(GPIOE, GPIO_Pinx));	//按键松开
//			if(tim6_period_cnt < 80)
//			{
//				ret = 1;	//短按
//				tim6_period_cnt = 0;
//			}
//			else
//			{
//				ret = 2;	//长按超过一秒
//				tim6_period_cnt = 0;
//			}
//			TIM_Cmd(TIM6, DISABLE);
//		}	
//	}
//	return ret;
//		
//}

